perm filename LIBCNT[J17,SYS] blob sn#000606 filedate 1972-03-24 generic text, type T, neo UTF8
00100	TITLE LIBCNT
00200	
00300	OPDEF PEEK [CALLI 33]
00400	OPDEF SLEEP [CALLI 31]
00500	OPDEF UFBRD [706B8]
00600	OPDEF UFBGET [CALLI 400010]
00700	OPDEF UFBWRT [707B8]
00800	OPDEF DATIME [CALLI 22]
00900	
01000	PLN←←40
01100	ARRAY PDL[PLN],SYSBUF[100],GOTB[6],BTIMES[6]
01200	INTEGER NMINS,LSTSEC
01300	
01400	P←17
01500	
01600	START:	MOVE P,[IOWD PLN,PDL]
01700		DATIME 1,
01800		MOVEI 2,5
01900	FTBS:	MOVEM 1,BTIMES(2)
02000		SOJGE 2,FTBS
02100		MOVEI 2,5
02200		MOVEI 1,400167
02300		MOVEM 1,LSTSEC
02400	GLOOP:	UFBGET 1,
02500		JRST [	SOS 1,LSTSEC
02600			JRST GLOOP]
02700		HRRZM 1,GOTB(2)
02800		SOS 1,LSTSEC
02900		SOJGE 2,GLOOP
03000		MOVEI 2,5
03100	WRLOOP:	MOVE 1,GOTB(2)
03200		UFBWRT 1,RDTAB
03300		JRST WRTERR
03400	WRTINC:	SOJGE 2,WRLOOP
03500	BIGLOP:	MOVEI 1,247
03600		PEEK 1,
03700		ADDI 1,24
03800		MOVEI 2,(1)
03900		PEEK 2,
04000		MOVEM 2,NLERRS#
04100		MOVEI 2,1(1)
04200		PEEK 2,
04300		MOVEM 2,NSAERR#
04400		MOVEI 2,2(1)
04500		PEEK 2,
04600		MOVEM 2,NLREQS#
04700		MOVEI 2,3(1)
04800		PEEK 2,
04900		MOVEM 2,NLRERS#
05000	
05100		OUTSTR [ASCIZ /TIME OF DAY = /]
05200		PUSHJ P,PRTIME
05300		PUSHJ P,CRLF
05400		OUTSTR [ASCIZ /UPTIME = /]
05500		PUSHJ P,UPTIME
05600		PUSHJ P,CRLF
05700		OUTSTR [ASCIZ /NUMBER OF TRANSFERS = /]
05800		MOVE 1,NLREQS
05900		PUSHJ P,DECPNT
06000		PUSHJ P,CRLF
06100		OUTSTR [ASCIZ /NUMBER OF RETRIES = /]
06200		MOVE 1,NLRERS
06300		SUB 1,NLREQS
06400		PUSHJ P,DECPNT
06500		PUSHJ P,CRLF
06600		OUTSTR [ASCIZ /NUMBER OF TIMES WE DID ERROR RETRIES AND WON = /]
06700		MOVE 1,NSAERR
06800		PUSHJ P,DECPNT
06900		PUSHJ P,CRLF
07000		OUTSTR [ASCIZ /NUMBER OF ERRORS = /]
07100		MOVE 1,NLERRS
07200		PUSHJ P,DECPNT
07300		PUSHJ P,CRLF
07400		MOVE 1,NLERRS
07500		IMULI 1,=100
07600		IDIV 1,NLREQS
07700		OUTSTR [ASCIZ /PERCENTAGE OF TRANSFERS THAT TERMINATED WITH ERROR = /]
07800		PUSHJ P,DECPNT
07900		OUTSTR [ASCIZ /%
08000	/]
08100		MOVEI 1,[ASCIZ /SYSTEM BAND OK
08200	/]
08300		MOVEI 2,400100
08400		UFBRD 2,[
08500	RDTAB:		SYSBUF
08600			40
08700			0]
08800		MOVEI 1,[ASCIZ /*** CAN'T READ SYSTEM BAND ***
08900	/]
09000		OUTSTR (1)
09100		OUTSTR [ASCIZ /BANDS 0-57,71,102-105,112,132,136 ARE PERMANENTLY BAD
09200	TOTAL PERMANENT BAD BANDS = 56 (DECIMAL).
09300	SYSTEM BAND IS 100. NUMBERS OF BANDS CURRENTLY AVOIDED ARE:
09400	/]
09500		MOVEI 3,261
09600		PEEK 3,
09700		MOVEI 4,(3)
09800		ADDI 3,60
09900	BBLOP:	MOVEI 1,(3)
10000		PEEK 1,
10100		CAME 1,[-1]
10200		JRST BBINC
10300		MOVEI 1,(3)
10400		SUBI 1,(4)
10500		CAIE 1,71
10600		CAIN 1,102
10700		JRST BBINC
10800		CAIE 1,103
10900		CAIN 1,104
11000		JRST BBINC
11100		CAIE 1,105
11200		CAIN 1,112
11300		JRST BBINC
11400		CAIE 1,132
11500		CAIN 1,136
11600		JRST BBINC
11700		CAIN 1,100
11800		JRST BBINC
11900		PUSHJ P,OCTPNT
12000		OUTSTR [ASCIZ /  /]
12100	BBINC:	ADDI 3,1
12200		CAIGE 3,170(4)
12300		JRST BBLOP
12400		OUTSTR [ASCIZ /
12500	BAND NUMBERS ARE IN OCTAL
12600	/]
12700		MOVEI 3,5
12800	RDTEST:	SKIPGE 1,GOTB(3)
12900		JRST NOBAND
13000		UFBRD 1,RDTAB
13100		JRST RDERR
13200	NOBAND:	SOJGE 3,RDTEST
13300		PUSHJ P,CRLF
13400		PUSHJ P,CRLF
13500		PUSHJ P,CRLF
13600		MOVEI 1,=10
13700		MOVEM 1,NMINS
13800	SLOOP:	MOVEI 1,7777/=60
13900		SLEEP 1,
14000		SOSLE NMINS
14100		JRST SLOOP
14200		JRST BIGLOP
14300	
14400	RDERR:	OUTSTR [ASCIZ /READ ERROR ON BAND /]
14500		MOVE 1,GOTB(3)
14600		ANDI 1,777
14700		PUSHJ P,OCTPNT
14800		OUTSTR [ASCIZ / OVER TIME INTERVAL /]
14900		DATIME 5,
15000		SUB 5,BTIMES(3)
15100		SKIPGE 5
15200		ADD 5,[=24*=60*=60*=60]
15300		PUSHJ P,PRTIM1
15400		PUSHJ P,CRLF
15500		DATIME 5,
15600		MOVEM 5,BTIMES(3)
15700		SOS 1,LSTSEC
15800	GOTIT:	MOVEM 1,GOTB(3)
15900		UFBGET 1,
16000		JRST [	SOS 1,LSTSEC
16100			CAIL 1,400060
16200			JRST GOTIT
16300			SETOM GOTB(3)
16400			JRST GOON]
16500	GOON:	JRST NOBAND
16600	
16700	WRTERR:	OUTSTR [ASCIZ /WRITE ERROR ON INITIAL WRITEOUT
16800	THIS MEANS WE ARE WRITING ON A BAD-BANDED BAND.
16900	/]
17000		SOS 1,LSTSEC
17100	GTWRB:	MOVEM 1,GOTB(2)
17200		UFBGET 1,
17300		JRST [	SOS 1,LSTSEC
17400			CAIL 1,400060
17500			JRST GTWRB
17600			SETOM GOTB(2)
17700			JRST GOWR]
17800		DATIME 5,
17900		MOVEM 5,BTIMES(2)
18000	GOWR:	JRST WRTINC
18100	
18200	CRLF:	OUTSTR [ASCIZ /
18300	/]
18400		POPJ P,
18500	
18600	DECPNT:	IDIVI 1,=10
18700		HRLM 2,(P)
18800		SKIPE 1
18900		PUSHJ P,DECPNT
19000		HLRZ 2,(P)
19100		ADDI 2,"0"
19200		OUTCHR 2
19300		POPJ P,
19400	
19500	OCTPNT:	IDIVI 1,10
19600		HRLM 2,(P)
19700		SKIPE 1
19800		PUSHJ P,OCTPNT
19900		HLRZ 2,(P)
20000		ADDI 2,"0"
20100		OUTCHR 2
20200		POPJ P,
20300	
20400	UPTIME:	MOVEI 5,215
20500		PEEK 5,
20600		PEEK 5,
20700		JRST PRTIM1
20800	
20900	PRTIME:	CALLI 5,22	; GET TIME IN TIX
21000	PRTIM1:	IDIVI 5,=3600	; GET MINUTES IN 5
21100		IDIVI 5,=60	; GET HOURS IN 5, MINUTES IN 6
21200		CAIGE 5,=10
21300		OUTCHR ["0"]
21400		MOVEI 1,(5)
21500		PUSHJ P,DECPNT
21600		CAIGE 6,=10
21700		OUTCHR ["0"]
21800		MOVEI 1,(6)
21900		JRST DECPNT
22000	
22100	END START